{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "186271c4",
   "metadata": {},
   "source": [
    "## 1.导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3dc2abc1",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt\n",
    "from matplotlib.patches import FancyArrowPatch\n",
    "from mpl_toolkits.mplot3d import proj3d\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "from pylab import mpl\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']    # 指定默认字体：解决plot不能显示中文问题\n",
    "mpl.rcParams['axes.unicode_minus'] = False           # 解决保存图像是负号'-'显示为方块的问题"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d8ffd38",
   "metadata": {},
   "source": [
    "## 2.读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "bde715d9",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_excel(r\"D:\\Dijkstra\\附件2：数据集2-终稿.xlsx\",header=1,index_col=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2715804e",
   "metadata": {},
   "source": [
    "## 3.数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a7fa1898",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        X坐标（单位: m）    Y坐标（单位: m）   Z坐标（单位: m） 校正点类型  第三问点标记\n",
      "编号                                                         \n",
      "0         0.000000  50000.000000  5000.000000    A点       0\n",
      "1     76009.848438   9788.111546  9121.895312     1       0\n",
      "2      2448.199054  71599.875612  1877.128662     0       0\n",
      "3     27800.929067  15218.071945  8345.410372     0       0\n",
      "4     50056.728450  91668.088891  1465.092302     0       0\n",
      "..             ...           ...          ...   ...     ...\n",
      "322    7946.309207  39584.641077  5737.066682     1       0\n",
      "323   78846.702215  73662.651583  3906.982043     1       0\n",
      "324   63645.559992  71435.222715  6263.129062     0       1\n",
      "325   19134.855718  85017.867083  2434.512879     0       0\n",
      "326  100000.000000  74860.548900  5499.611095    B点       0\n",
      "\n",
      "[327 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "df1 = df\n",
    "print(df1)\n",
    "n = df1.shape[0]-1\n",
    "df1.loc[0, '校正点类型'] = 2  # A点用2表示\n",
    "df1.loc[n, '校正点类型'] = 3  # B点用3表示\n",
    "data = np.array(df1.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "694e6acc",
   "metadata": {},
   "source": [
    "## 4.生成三维散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b6fd0842",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp/ipykernel_10052/2098187255.py:21: MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure is deprecated since 3.4. Pass the keyword argument auto_add_to_figure=False and use fig.add_axes(ax) to suppress this warning. The default value of auto_add_to_figure will change to False in mpl3.5 and True values will no longer work in 3.6.  This is consistent with other Axes classes.\n",
      "  ax = Axes3D(fig)\n"
     ]
    },
    {
     "data": {
      "image/png": "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l7/8JZmZmZG0NhEiRLCIpLXZM0TS2kSIEOEHT0S4IkSIMOKICFeECBFGHBHhihDhB4phGATzYUspMQyj333b2tr2VLOGhYhwRYgwwnn44Yd56qmnei1//PHHOfroozn66KOZNm0a48aN4+ijj+aoo47i8ccf79yuoqKC008/vfN/0zQ59thje6XK0XW9zzb0tW5PZaWIhENEiDDCcTqdncKh6zpFRUWMGzeOiy++mDFjxvDTn/6Ut956iy1btnDHHXfw+uuvM2HCBMASKVVVsdlsVFZWcv311xMTE0NmZia/+c1v8Pv9nHzyyZx55plcffXVbNmyBSEETU1NNDQ0MHbsWADy8/N54YUXerVtT2WliAhXhAgjjM8//5zbbrsNRVFISkripJNOYs2aNQD89re/JS0tjbvuugtVVbntttu6hRn4fD7uvvtuPvnkEwBef/117r//fqqqqnjwwQd59dVX+eCDDzj++OPZtm0bubm5xMfHA/CPf/yj8zhLlixh4cKF3H///QO2d09kpYh0FSNE2MO8/z5cc431ezg46KCDWLx4MW+//TZ2ux2A9957jzPPPJNp06Zx1113ARAbG8sf//hHbrnlls597733Xs4//3xGjRoFwDnnnMNZZ53FT37yE+6//35eeeUVnnzySQzDoLCwkJ/85CcUFhZ27v/rX/86aJu6+szKyspISkriiCOOoKioiBtvvJEjjjiCzMzMToEdKhGLK0KEPcj778M554DbDc8/PzzFrG02GzabjaeeeoozzjiDlpYWLr30UlauXNmZi8s0TQBOP/10Zs6cyapVqwA45ZRTmDFjBqZpIqVEVVUWLlxIfX09l1xyCePHj+eee+7B6XSSmJjIDTfcQHR0dOe5lyxZ0vn3K6+8wjfffIOUkqOPPpo777wTYK9kpYgIV4QIe5CPP7ZEC6zfH388PEWta2pqeP3111m6dCnPPPMMkyZNwm6385e//IVbbrmFRYsWcf/996MoSuf2bre7U3g65iva7Xby8/PJzs7mmGOO4ZxzzuHwww/n008/5Te/+Q0ffvghGRkZneftOB7AueeeG7Sr2DUrRVe2bNnCddddN/SLJyJcESLsUY491rK03G6Ijrb+HyoNDQ2cccYZ/PGPf0TTdn+F//CHP3DRRRdx7rnncvfdd7N48eLOdV2d81159dVXufrqq3nkkUe4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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def generate_3D_scatter(data):\n",
    "    #### 起点 ####\n",
    "    Xa = data[0][0]\n",
    "    Ya = data[0][1]\n",
    "    Za = data[0][2]\n",
    "    #### 终点 ####\n",
    "    Xb = data[n][0]\n",
    "    Yb = data[n][1]\n",
    "    Zb = data[n][2]\n",
    "    #### 水平校正点 ####\n",
    "    Xh = data[data[:,3]==0][:,0]\n",
    "    Yh = data[data[:,3]==0][:,1]\n",
    "    Zh = data[data[:,3]==0][:,2]\n",
    "    #### 垂直校正点 ####\n",
    "    Xv = data[data[:,3]==1][:,0]\n",
    "    Yv = data[data[:,3]==1][:,1]\n",
    "    Zv = data[data[:,3]==1][:,2]\n",
    "\n",
    "    #### 绘制三维散点图 ####\n",
    "    fig = plt.figure()\n",
    "    ax = Axes3D(fig)\n",
    "    ax.scatter(Xa,Ya,Za, c='r', s=10, label='起点')\n",
    "    ax.scatter(Xb,Yb,Zb, c='g', s=10, label='终点')\n",
    "    ax.scatter(Xh,Yh,Zh, c='b', s=10, label='水平校正点')\n",
    "    ax.scatter(Xv,Yv,Zv, c='y', s=10, label='垂直校正点')\n",
    "\n",
    "    # 绘制图例\n",
    "    ax.legend(loc='best')\n",
    "\n",
    "    # 添加坐标轴(顺序是Z, Y, X)\n",
    "    ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})\n",
    "    ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})\n",
    "    ax.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})\n",
    "\n",
    "    ax.view_init(elev=10., azim=-80)\n",
    "    # 展示\n",
    "    plt.title(\"三维散点图\")\n",
    "    plt.show()\n",
    "generate_3D_scatter(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7dff905f",
   "metadata": {},
   "source": [
    "## 5.生成距离矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f15af663",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0., inf, inf, ..., inf, inf, inf],\n",
       "       [inf,  0., inf, ..., inf, inf, inf],\n",
       "       [inf, inf,  0., ..., inf, inf, inf],\n",
       "       ...,\n",
       "       [inf, inf, inf, ...,  0., inf, inf],\n",
       "       [inf, inf, inf, ..., inf,  0., inf],\n",
       "       [inf, inf, inf, ..., inf, inf,  0.]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 问题2：α1 = 20，α2 = 10，β1 = 15，β2 = 20，𝜃 = 20，𝛿 = 0.001\n",
    "##计算两点之间的欧式距离\n",
    "def cal_distance(point1,point2):\n",
    "    return np.linalg.norm(point1 - point2)\n",
    "##建立距离矩阵\n",
    "##根据第一问要求可以得到 当垂直-水平校正交替的情况下能够获得最优航迹路径；\n",
    "def build_distance_matrix(data, delta, limit):\n",
    "    n = len(data)\n",
    "    mat = np.zeros([n,n])\n",
    "    for i in range(0,n):\n",
    "        point1 = data[i,0:3]\n",
    "        attr1 = data[i,3]\n",
    "        for j in range(0,n):\n",
    "            if j != i:\n",
    "                point2 = data[j,0:3]\n",
    "                attr2 = data[j, 3]\n",
    "                dis = cal_distance(point1,point2)\n",
    "                #如果连续两个水平校正点或连续两个垂直校正点，则把两点之间的距离设为无穷大\n",
    "                if attr1==0 and attr2 ==0:\n",
    "                    mat[i][j] = float('inf')\n",
    "                elif attr1==1 and attr2==1:\n",
    "                    mat[i][j] = float('inf')\n",
    "                else:\n",
    "                    if dis * delta <= limit:\n",
    "                        mat[i][j] = dis\n",
    "                    #如果两点之间的误差大于α2，β1时无法进行任何校正\n",
    "                    else:\n",
    "                        mat[i][j] = float('inf')\n",
    "    return mat\n",
    "dis_mat = build_distance_matrix(data,0.001,15)\n",
    "dis_mat"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb8e32cf",
   "metadata": {},
   "source": [
    "## 6.带约束的Dijkstra算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d8d50bfe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "到达每个节点的最短路径列表: [0, 98108.69242545142, 27375.152834449873, 53818.694487503206, 89288.32544814414, 27259.967276794978, 79343.65322470378, 72751.53616180236, 32544.03671238354, 72619.00318212106, 28824.64901817879, 121451.0455855286, 90018.44203727011, 80270.10473516906, 68209.50870193857, 95852.98913568229, 101196.49074039646, 119274.7600568555, 85273.4219702741, 82518.34677805805, 110837.56271775947, 90878.56619580417, 116884.44897081249, 79839.35725669803, 60943.657866793445, 95013.56416149551, 70090.22115834341, 92179.11870005373, 78274.70671696494, 82912.85104328075, 60137.37704307352, 27846.31390960805, 93992.9048565258, 80429.37090519382, inf, 89183.6699356015, 53872.773591067795, inf, 93720.71528155591, 89065.33705643995, 26424.472211273587, 73243.73766055662, 74933.0041484218, 87671.41013719013, 81101.3259799135, 64678.166420374626, 65872.6433117508, 52594.527324253715, 27605.176869080926, 66462.19945932648, 90144.85203117249, 89474.9776497887, 63907.96529071513, 57233.90597517826, 49093.86257513577, 62913.91966234818, 27060.303613343014, 95015.67329170824, 31723.173913395334, 114043.10064825397, 30506.15477587059, 97258.39269037034, 97218.62995432445, inf, 100858.79243420217, 36844.635942810746, 75037.67057049066, 64725.68428642638, 99665.16614451005, 69220.29005646365, 83358.36376069122, 118191.41906890857, 102786.51048993271, 66427.34662107684, inf, 30945.076477251343, 75842.16087445646, 79839.70374289769, 59844.79488678492, 51563.189472276, 78313.1639494498, 120123.2175977852, 72158.94330639149, 100697.22010203057, 106236.78008662135, 75560.35462723186, 66357.2478467644, 106601.8442947199, 92471.42367681976, 32310.23055872538, 59764.097961057225, 24056.492182072012, 77939.46459302923, 87424.18298867947, 34281.16490021223, 63676.79717505845, 102350.7565723499, 111578.58256872153, 84178.00065571409, 106847.14024575913, 24601.423652460042, 118390.42920796163, 85928.3736659688, 64670.11349707548, 16522.41620989546, 18474.45369006206, 55747.420222783956, 117559.15115523894, 56449.409822249385, 77094.34691725159, 97647.25178949618, 71214.74509062519, 58614.330576975226, 92648.43693037605, 18622.050934416933, 65153.71536120693, 54965.48997766132, 71685.38651825671, inf, 58565.79007356622, 119419.64034950426, 49320.40475873518, 93861.99216425294, 54672.00500290172, 113301.24054372375, 64653.29629884541, 49184.57698033926, 50378.50724387132, 28908.480971727502, 112010.14313185416, 59507.3627003235, 62602.99531274683, 52141.81126994728, 45006.390119971584, 122069.51240466961, 110055.64810454316, 12827.924153862119, 30435.236071603093, 79321.57470903474, 111023.56448160011, 5655.760961595714, 109795.76988299222, 46562.470026341965, 67203.2865440594, 64669.72229374773, 78311.17792537977, 32577.046928928437, 59766.29423023088, 53271.446449983865, 36862.94761049566, 10875.080451440384, 51689.48005449415, inf, 100496.47797872144, 92520.17688118231, 70024.25654677648, 86304.54830600905, 9476.75627532296, 27889.595906274048, 106440.30721460884, 72163.30096767048, 107803.92312809103, 24558.61455721888, 13287.897610451277, 83568.9027348084, 86890.8226306826, 106298.26854214889, 70126.06866688124, 63391.0142896615, 9270.541363612254, 57665.8067798621, 56974.6940883821, 60687.99228000867, 32157.63505333286, 74104.15535464417, 86303.56284787506, 36374.0306334906, 95520.08666917883, 120800.60768008814, 77709.18933600537, 21894.326278397777, 73898.82871023218, 30727.702128971287, 94335.91758467846, 3053.021246576824, 50735.28909217844, 97958.61147488904, 98489.9329263682, 24109.73215131572, 83076.39096555012, 47294.06756100134, 74705.74127682885, 84309.55607778649, 90706.71743908811, 40317.13525367928, 56257.25155411998, 51442.84493449822, 63405.028693047134, 28298.9518087909, 101282.59176278555, 97088.0348486408, 96008.86366049584, 123334.59479784673, 92721.77209885101, 61197.56917923997, 47859.35442100197, 63077.92419019177, 74182.51635449567, 67042.44031789813, 28885.718485289566, 107770.08688302792, 82028.83523103288, 108065.59667929068, 79743.34747235093, 72140.42826690793, 67211.25205440886, 97820.81959797845, 126606.29920702845, 36367.82440749006, 97808.43065422309, 80599.60556146136, 76975.9380054969, 30435.606532096295, 102985.5763153744, 115589.29286576166, 45431.27776137604, 16774.115976556703, 38497.144461035, 99227.98499679778, 47501.00295311632, 41595.51000685588, 64108.73171001441, 73938.171942674, 115115.18059430747, 23153.26234443194, 33790.04096903124, 42437.63073414546, 30869.756417284698, 25500.80191011478, 87852.33443799108, 107343.58032853705, 52379.593516386296, 102888.21430069387, 66833.68480190076, 92967.74735709469, 33347.78840128173, 99950.38846008181, 96321.31379048986, 48284.72528173216, 84010.55714087497, 60858.695526971, 24964.911542124246, 11107.557619614428, 75497.75260363621, 112546.20334953716, 49776.022786079746, 26093.26741249302, 51111.08458166663, 53271.08826591642, 22981.336743019674, 8348.977623176444, 72996.61801574273, 80249.66667286276, 109096.77642494708, 12498.786175742596, 89170.4669847795, 18748.52635245402, 46465.08516996564, 59636.30959525969, 78609.69256641655, 24759.469919962503, 19279.73571426853, 118410.30928562596, 62042.239670090974, 86851.2800466284, 5708.663086533746, 101520.05919251591, 60191.91230155948, 61622.82421773806, 95991.38095682191, 35361.53594456377, 54797.29702522692, 103371.41611607953, 61383.75691488877, 99876.32032002529, 92972.42148709271, 107226.2200490844, 97685.9990584551, 19522.757588819753, 89669.45177781596, 25242.29657519491, 113174.4980653109, 103812.30657445335, 90731.31437519679, inf, 108551.89083414435, 54461.32826399945, 123756.53994003273, 74221.97414004849, 67914.54410890352, 79974.54785948848, 100944.52068705663, 105128.14507011893, 117512.82563227827, 58728.15008652618, 42897.2365535346, 25267.386674008303, 41625.200460435706, 51239.049523419046, 38068.36211376222, 50640.01822273909, 102666.92135458704, inf, 101003.1376584433, 61520.251303088895, 99954.81765558833, 83218.11315209042, 98928.35933191326, 80652.4219986327, 74221.04391923852, 95349.16251374988, 89779.23740841878, 13418.628407103268, 98073.24146165403, 79573.757928237, 43041.843793595486, 110772.81584923199]\n",
      "========================================================================================================================\n",
      "前驱节点列表： [inf, 193, 256, 133, 145, 114, 82, 52, 114, 250, 270, 97, 6, 41, 281, 193, 274, 295, 76, 191, 159, 43, 233, 26, 310, 165, 206, 239, 95, 42, 308, 322, 239, 174, inf, 164, 151, inf, 93, 274, 180, 231, 215, 109, 82, 123, 123, 190, 259, 123, 19, 274, 195, 248, 309, 3, 180, 164, 158, 135, 100, 93, 164, inf, 122, 56, 208, 195, 27, 112, 207, 141, 177, 108, inf, 180, 73, 167, 133, 205, 117, 233, 73, 203, 287, 143, 119, 177, 50, 270, 225, 226, 160, 92, 288, 147, 38, 166, 262, 110, 322, 141, 232, 36, 140, 163, 127, 139, 205, 117, 38, 144, 151, 29, 163, 123, 190, 273, inf, 196, 233, 309, 193, 121, 161, 123, 194, 307, 234, 263, 257, 3, 236, 236, 107, 292, 184, 100, 160, 199, 0, 302, 65, 250, 281, 7, 270, 133, 267, 158, 0, 190, inf, 315, 145, 67, 318, 0, 290, 177, 45, 287, 180, 0, 213, 109, 61, 86, 171, 0, 123, 205, 241, 158, 231, 92, 8, 50, 107, 111, 271, 115, 306, 165, 0, 236, 12, 50, 114, 298, 194, 160, 145, 300, 137, 308, 205, 112, 322, 122, 122, 39, 22, 18, 106, 194, 3, 73, 95, 290, 313, 181, 110, 174, 14, 112, 12, 107, 158, 12, 80, 41, 234, 284, 295, 230, 140, 222, 113, 230, 222, 123, 26, 282, 114, 162, 89, 259, 234, 145, 284, 307, 27, 119, 19, 48, 50, 50, 194, 167, 258, 114, 0, 9, 72, 309, 259, 325, 205, 136, 0, 273, 253, 284, 0, 43, 169, 176, 190, 160, 322, 140, 263, 296, 249, 0, 203, 308, 78, 175, 180, 3, 279, 257, 203, 102, 317, 38, 226, 33, 104, 84, 61, 145, inf, 159, 190, 129, 69, 172, 117, 279, 279, 20, 190, 222, 288, 245, 325, 8, 325, 38, inf, 177, 123, 193, 253, 193, 41, 73, 164, 211, 169, 50, 160, 65, 292]\n",
      "========================================================================================================================\n",
      "到达每个点需要经过的节点个数: [0, 12, 5, 7, 12, 3, 10, 10, 3, 9, 4, 14, 11, 9, 9, 12, 13, 15, 10, 10, 14, 12, 14, 10, 8, 12, 9, 13, 9, 11, 8, 3, 13, 9, inf, 11, 8, inf, 11, 13, 4, 8, 10, 11, 10, 7, 7, 7, 4, 7, 11, 13, 9, 7, 5, 8, 4, 11, 5, 14, 4, 11, 11, inf, 13, 5, 10, 9, 14, 9, 10, 14, 13, 8, inf, 4, 9, 11, 7, 7, 10, 14, 9, 12, 13, 10, 9, 13, 12, 4, 7, 3, 9, 10, 4, 8, 12, 13, 12, 13, 3, 14, 11, 9, 2, 2, 8, 15, 7, 10, 12, 10, 8, 12, 2, 7, 7, 9, inf, 8, 14, 5, 12, 6, 14, 7, 6, 7, 4, 14, 8, 8, 6, 6, 16, 13, 2, 4, 9, 14, 1, 13, 6, 9, 9, 11, 4, 7, 6, 5, 1, 7, inf, 13, 12, 10, 10, 1, 4, 13, 8, 13, 4, 1, 10, 11, 12, 10, 8, 1, 7, 7, 8, 5, 8, 10, 4, 12, 16, 11, 3, 8, 5, 12, 1, 6, 12, 12, 3, 11, 6, 9, 12, 11, 5, 8, 7, 9, 3, 13, 13, 14, 15, 11, 9, 6, 8, 9, 9, 4, 14, 9, 13, 9, 10, 9, 12, 16, 5, 12, 11, 9, 4, 13, 15, 6, 2, 5, 13, 6, 5, 7, 10, 13, 3, 5, 5, 4, 4, 12, 13, 7, 14, 9, 11, 5, 12, 12, 6, 11, 8, 3, 1, 10, 14, 5, 4, 7, 7, 3, 1, 9, 11, 13, 1, 12, 2, 5, 7, 9, 3, 2, 14, 8, 12, 1, 12, 8, 8, 11, 4, 8, 12, 8, 12, 12, 13, 12, 3, 10, 3, 14, 12, 12, inf, 14, 7, 15, 10, 9, 10, 12, 12, 15, 7, 5, 4, 6, 7, 4, 7, 12, inf, 13, 7, 12, 11, 12, 9, 9, 11, 10, 2, 12, 9, 6, 13]\n",
      "水平误差： [0, 7.401974986363311, 0, 0, 0, 0, 7.184709918312291, 0, 0, 0, 4.065179098216286, 9.872463016807071, 0, 0, 0, 5.14627169659418, 0, 0, 9.43126109581764, 7.812605501229211, 4.3972555031506335, 3.2071560586140437, 1.7692683765050181, 9.749136098354624, 0, 8.122741530812913, 0, 4.326784262062651, 0, 0, 0, 0, 6.140570418534715, 0, inf, 0, 2.18329353657364, inf, 0, 0, 0, 9.135005950542219, 7.7217520940129285, 0, 8.942382673522, 0, 0, 0, 4.623840126061252, 0, 0, 0, 7.650713736595147, 0, 0, 9.095225174844972, 0, 0, 3.8335780071212864, 3.9874525437108135, 5.904731123410547, 0, 0, inf, 0, 9.784332329467734, 7.995230252592533, 8.468432732306399, 0, 0, 9.175847406195553, 8.395649185916353, 0, 9.977936798827454, inf, 0, 0, 0, 0, 0, 6.627777431193079, 5.00803700347773, 0, 7.9754480031795545, 0, 8.357068083172463, 0, 0, 2.3265716456472676, 7.550760638762876, 0, 7.282376205515311, 0, 9.484718395650237, 0, 3.9105029448275683, 8.630041290793988, 0, 3.928333982851332, 0, 0, 8.59465932496941, 0, 0, 0, 5.186556079610783, 5.368912978912638, 0, 0, 5.408960398994886, 3.926536507940267, 6.545022796877456, 6.924850522481074, 9.73558588709529, 5.334153323965658, 0, 0, 0, inf, 7.122945139067998, 4.30445975519679, 0, 3.1552747251648308, 5.3516002441665425, 5.497317415632721, 0, 8.867441726659987, 0, 5.755218627295561, 2.913366706907078, 0, 8.784300825243625, 9.70418053580182, 2.5687593858261275, 4.510361249430674, 0, 9.774902907285295, 5.833812419143052, 0, 9.740972718814566, 5.655760961595715, 0, 0, 0, 0, 5.559641763577406, 7.817577008965936, 0, 6.80636128001822, 8.973351704221617, 0, 0, inf, 0, 0, 0, 5.652126307376361, 9.476756275322959, 0, 0, 7.48513454729585, 0, 0, 0, 3.8255552624574793, 0, 9.039875851778541, 3.768820820116841, 6.416320201279399, 0, 0, 0, 8.308398763622378, 4.268039147058813, 9.995423644629765, 8.36409825484582, 3.82999392110706, 5.375234638006345, 3.2414565248491987, 0, 2.6145905641292493, 8.745113349025248, 5.4603154549629815, 7.4450949539958655, 0, 8.297658358032981, 7.940169437618928, 8.345080895195718, 0, 0, 6.976932307322067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.9435266040559, 0, 0, 0, 7.542219167322694, 9.259229702688566, 0, 0, 0, 6.76694922458462, 0, 0, 0, 3.9309195649693542, 0, 7.802377560708343, 9.047148051789508, 8.478228501216012, 7.789988616952985, 0, 0, 7.282344187664356, 0, 0, 3.8357677545201625, 0, 0, 0, 5.90549294626044, 0, 0, 3.8479507843305956, 0, 0, 9.231426411812356, 0, 7.888419674265024, 2.3475395656828413, 0, 0, 0, 0, 0, 0, 0, 9.805536428909324, 6.176461759317382, 7.967590028052881, 0, 7.587607261054583, 0, 0, 2.8787494215151566, 9.759692859604444, 0, 3.111930669473348, 8.069240788071147, 0, 0, 8.348977623176445, 0, 0, 0, 0, 1.4990568475893724, 9.477984988841767, 0, 0, 0, 0, 0, 9.313532860678887, 7.580911406091526, 2.8407229057534282, 5.708663086533746, 8.798287093664902, 0, 1.778029330953144, 0, 0, 0.9786025377237193, 7.380035159257621, 0, 7.154548221174286, 7.044047821123909, 0, 3.965283776899183, 2.7486416122630515, 9.240080872622146, 8.71988036529945, 6.937717978689546, 6.5539138840830065, 0, inf, 2.111583619535514, 0, 0, 5.0016840835848395, 0, 8.289161341231768, 4.9531397302347235, 9.136764113297023, 0, 0, 0, 0, 8.277412059153974, 8.197205729823558, 5.5243254013786816, 7.598174429143604, 8.946206073031131, inf, 0, 0, 9.248100216500218, 0, 8.221641892825158, 0, 0, 0, 7.750402177385901, 4.148087043491015, 7.928389430481543, 0, 0, 13.51442315886164]\n",
      "垂直误差： [0, 0, 1.2818854219568514, 8.812304367531619, 10.97714752276437, 8.637916342378045, 0, 8.843570871087227, 13.921985777966604, 11.760307655150056, 0, 0, 10.674788812566328, 7.026367074612443, 13.41221167671164, 0, 14.345210693768065, 10.722869222711156, 0, 0, 0, 0, 0, 0, 10.303639644054355, 0, 7.012296968151647, 0, 14.59790954190649, 7.979846894858953, 8.89832751965447, 14.427685502504783, 0, 6.325215550549653, inf, 5.614767200793093, 0, inf, 6.296532292876443, 2.214057009811562, 4.530145932875811, 0, 0, 10.577063219938536, 0, 10.006161417472903, 11.200638308849074, 5.300459763252375, 0, 11.790194456424764, 7.626505253114426, 2.623697603160313, 0, 8.94918069344611, 11.02550046137355, 0, 5.1659773349452385, 11.44677055689983, 0, 0, 0, 9.834209701690867, 13.649727219516048, inf, 6.99680026994923, 0, 0, 0, 7.486047444456318, 10.605959479488433, 0, 0, 7.266423820753894, 0, inf, 9.050750198853564, 9.414814253379616, 9.713635076016454, 14.838404766813333, 3.7038350512740323, 0, 0, 5.731596685314652, 0, 8.55078102816625, 0, 7.791457773198171, 11.081757625541064, 0, 0, 14.332820199681189, 0, 5.776163625358746, 0, 14.758407311392471, 0, 0, 5.2803140265726345, 0, 9.199888456262961, 11.182795245356775, 0, 11.990201723294799, 10.797339906007682, 10.866655248299743, 0, 0, 6.535586673638835, 8.590055401247417, 0, 0, 0, 0, 0, 0, 10.481710358305211, 7.671422416659975, 9.643146848165735, inf, 0, 0, 11.252042644972965, 0, 0, 0, 9.98129129594369, 0, 8.753306783435614, 0, 0, 8.39627811865687, 0, 0, 0, 0, 6.243341530089802, 0, 0, 7.158273741364259, 0, 0, 4.667624812873282, 9.717834083531221, 6.3445910170884074, 9.872425268520804, 0, 0, 14.759904110259297, 0, 0, 10.875080451440384, 4.395412493492811, inf, 0.5416603231331168, 14.208998955802546, 5.2985722603500935, 0, 0, 2.6472993310791395, 10.920220545430016, 0, 10.117924069635933, 2.664288278821104, 13.287897610451276, 0, 9.796475713431004, 0, 0, 0, 9.270541363612255, 2.9938017769603764, 9.115339667380134, 0, 0, 0, 0, 0, 0, 0, 6.494444245380181, 0, 0, 0, 0, 3.053021246576824, 0, 0, 0, 5.4876812168987845, 8.854416825501628, 0, 2.542440309158373, 5.998378152406719, 10.732169579599631, 9.881899182076184, 5.018202030700939, 3.5834905134962525, 4.790698116071908, 14.880323401687631, 7.420599598532619, 3.2260426843878633, 0, 6.450145827034247, 7.448350128576919, 5.45014895645601, 0, 0, 7.755169733418836, 3.365643142839677, 3.643421910094656, 0, 8.130006520800704, 10.41834488979451, 5.639192117706763, 0, 8.596921477433638, 0, 0, 0, 0, 2.2864416120115667, 3.7322003449402636, 0, 3.109255995349117, 7.037402031617315, 0, 11.118355014960988, 8.061537928938709, 6.579548066421727, 0, 11.159903474759588, 9.436726707112685, 0, 11.743764478227936, 4.531211410015006, 0, 10.127400175420082, 0, 0, 9.541156512611318, 7.467260008511759, 10.75439305595059, 10.70909560064014, 8.267894728334548, 10.449400579036638, 5.742611532200802, 0, 0, 0, 13.884488473993725, 0, 6.342860607707311, 11.107557619614429, 0, 0, 11.707660672317527, 0, 0, 5.4117338449144485, 10.153412589157558, 0, 10.954378345651758, 4.751914069226551, 9.220456104921782, 12.498786175742596, 0, 0, 10.091054536475042, 12.342242034258351, 6.446391598746067, 11.340841512859235, 13.623974752672815, 0, 0, 0, 0, 0, 8.952862778140432, 0, 9.687818108946853, 13.467209666165994, 0, 0, 10.27267233322214, 0, 0, 8.29786071717113, 0, 0, 0, 0, 0, 0, 12.420136449817017, inf, 0, 7.1672607029981075, 11.746396808178567, 0, 7.226551828894845, 0, 0, 0, 6.675262914518796, 11.434082525524838, 12.46163002143831, 5.7446290851885475, 0, 0, 0, 0, 0, inf, 5.483050989264475, 6.848246300187172, 0, 7.720360548454203, 0, 7.408684338076071, 7.793697298161691, 11.780259778941474, 0, 0, 0, 7.410456960566524, 6.197207850784741, 6.960509274778634]\n"
     ]
    }
   ],
   "source": [
    "def dijkstra(start, point_type, graph, alpha1, alpha2, beta1, beta2, theta, delta):\n",
    "    '''\n",
    "    :param start: 起点下标\n",
    "    :param point_type: 点的类型：水平校正点为0，垂直校正点为1，起点为2，终点为3\n",
    "    :param graph: 距离矩阵\n",
    "    :return:\n",
    "            dist: 到达每个节点的最短路径列表\n",
    "            pre_node_list: 前驱节点列表\n",
    "            node_num_list: 到达每个点需要经过的节点个数\n",
    "            h_error:水平误差\n",
    "            v_error:垂直误差\n",
    "    '''\n",
    "    if graph is None:\n",
    "        return None\n",
    "    #到达每个节点的最短距离向量\n",
    "    dist = [float(\"inf\")] * len(graph)\n",
    "    dist[start] = 0\n",
    "    # 水平误差\n",
    "    h_error = [float(\"inf\")] * len(graph)\n",
    "    h_error[start] = 0\n",
    "    # 垂直误差\n",
    "    v_error = [float(\"inf\")] * len(graph)\n",
    "    v_error[start] = 0\n",
    "    #访问过的节点列表\n",
    "    S = []\n",
    "    #未访问过的节点列表\n",
    "    Q = [x for x in range(len(graph))]\n",
    "    #初始节点与其他节点的距离\n",
    "    dis_list = [i for i in graph[start]]\n",
    "    #前驱节点列表\n",
    "    pre_node_list = [float(\"inf\")] * len(graph)\n",
    "    #到达每个节点需要经过的节点数量\n",
    "    node_num_list = [float(\"inf\")] * len(graph)\n",
    "    node_num_list[start] = 0\n",
    "    while Q:\n",
    "        #找出初始节点与其他节点的最近距离且该节点必须在未访问的节点列表中\n",
    "        u_dist = min([d for v, d in enumerate(dis_list) if v in Q])\n",
    "        if u_dist == float(\"inf\"):\n",
    "            break\n",
    "        #求出该点下标\n",
    "        u = dis_list.index(u_dist)\n",
    "        #将u节点添加到访问过的节点列表\n",
    "        S.append(u)\n",
    "        #将u节点移出未访问过的节点列表\n",
    "        Q.remove(u)\n",
    "        #寻找u的下一个节点v\n",
    "        for v,d in enumerate(graph[u]):\n",
    "            if d != float(\"inf\"):\n",
    "                #如果起点到v的距离大于起点到u的距离才需要更新，否则保持\n",
    "                if dist[v] > dist[u] + d:\n",
    "                    #如果v点为水平校正点\n",
    "                    if point_type[v] == 0 and h_error[u] + d * delta < beta2 and v_error[u] + d * delta < beta1:\n",
    "                        #清空水平误差\n",
    "                        h_error[v] = 0\n",
    "                        #对到v点的距离进行赋值\n",
    "                        dist[v] = dist[u] + d\n",
    "                        dis_list[v] = dist[v]\n",
    "                        #更新垂直误差\n",
    "                        v_error[v] = v_error[u] + d*delta\n",
    "                        #更新前驱节点列表\n",
    "                        pre_node_list[v] = u\n",
    "                        #更新到达每个节点需要经过的节点数量\n",
    "                        node_num_list[v] = node_num_list[u] + 1\n",
    "                    # 如果v点为垂直校正点\n",
    "                    if point_type[v] == 1 and h_error[u] + d * delta < alpha2 and v_error[u] + d * delta < alpha1:\n",
    "                        #清空垂直误差\n",
    "                        v_error[v] = 0\n",
    "                        #对到v点的距离进行赋值v\n",
    "                        dist[v] = dist[u] + d\n",
    "                        dis_list[v] = dist[v]\n",
    "                        #更新垂直误差\n",
    "                        h_error[v] = h_error[u] + d*delta\n",
    "                        #更新前驱节点列表\n",
    "                        pre_node_list[v] = u\n",
    "                        #更新到达每个节点需要经过的节点数量\n",
    "                        node_num_list[v] = node_num_list[u] + 1\n",
    "                    # 如果v点为终点\n",
    "                    if point_type[v] == 3 and h_error[u] + d * delta < theta and v_error[u] + d * delta < theta:\n",
    "                        #更新水平误差\n",
    "                        h_error[v] = h_error[u] + d*delta\n",
    "                        #更新垂直误差\n",
    "                        v_error[v] = v_error[u] + d*delta\n",
    "                        #对到v点的距离进行赋值v\n",
    "                        dist[v] = dist[u] + d\n",
    "                        #更新前驱节点列表\n",
    "                        pre_node_list[v] = u\n",
    "                        #更新到达每个节点需要经过的节点数量\n",
    "                        node_num_list[v] = node_num_list[u] + 1\n",
    "\n",
    "    return dist, pre_node_list, node_num_list,h_error,v_error\n",
    "dist, pre_node_list, node_num_list,h_error,v_error = dijkstra(start=0,point_type=data[:,3],graph=dis_mat,alpha1=20,alpha2=10,beta1=15,beta2=20,theta=20,delta=0.001)\n",
    "print(\"到达每个节点的最短路径列表:\",dist)\n",
    "print(\"=\"*120)\n",
    "print(\"前驱节点列表：\",pre_node_list)\n",
    "print(\"=\"*120)\n",
    "print(\"到达每个点需要经过的节点个数:\",node_num_list)\n",
    "print(\"水平误差：\",h_error)\n",
    "print(\"垂直误差：\",v_error)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b5a8146",
   "metadata": {},
   "source": [
    "## 7.生成最优路径和最短距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "66c23e20",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最优路径： [0, 163, 114, 8, 309, 121, 123, 45, 160, 92, 93, 61, 292, 326]\n",
      "到达终点的最短距离： 110772.81584923199\n"
     ]
    }
   ],
   "source": [
    "def generate_path(pre_node_list,last):\n",
    "    path = [last]\n",
    "    temp = last\n",
    "    while temp != 0:\n",
    "        index = pre_node_list[temp]\n",
    "        path.append(index)\n",
    "        temp = index\n",
    "    return list(reversed(path))\n",
    "path = generate_path(pre_node_list,last=len(data)-1)\n",
    "print(\"最优路径：\",path)\n",
    "print(\"到达终点的最短距离：\",dist[n])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "35ab7157",
   "metadata": {},
   "source": [
    "## 8.到达矫正点之前的误差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2820f43c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "矫正前的水平误差： [0, 13.287897610451276, 5.334153323965658, 19.256139101932263, 5.5243254013786816, 16.776368046351646, 5.3516002441665425, 15.357761661639445, 7.48513454729585, 13.261298172654595, 9.484718395650237, 19.318928097341104, 6.5539138840830065, 13.51442315886164]\n",
      "矫正前的垂直误差： [0, 13.287897610451276, 18.622050934416933, 13.921985777966604, 19.446311179345287, 11.252042644972965, 16.603642889139508, 10.006161417472903, 17.491295964768753, 5.776163625358746, 15.260882021008982, 9.834209701690867, 16.388123585773872, 6.960509274778634]\n"
     ]
    }
   ],
   "source": [
    "def generate_error(path,h_error,v_error):\n",
    "    h_err = [0]\n",
    "    v_err = [0]\n",
    "    for index in range(1,len(path)):\n",
    "        if h_error[path[index]]==0:\n",
    "            h_err.append(h_error[path[index-1]]+v_error[path[index]])\n",
    "        else:\n",
    "            h_err.append(h_error[path[index]])\n",
    "        if v_error[path[index]]==0:\n",
    "            v_err.append(v_error[path[index-1]]+h_error[path[index]])\n",
    "        else:\n",
    "            v_err.append(v_error[path[index]])\n",
    "    return h_err,v_err\n",
    "h_err,v_err = generate_error(path,h_error,v_error)\n",
    "print(\"矫正前的水平误差：\",h_err)\n",
    "print(\"矫正前的垂直误差：\",v_err)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4caae63b",
   "metadata": {},
   "source": [
    "## 9.绘制最短路径图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "92862825",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp/ipykernel_10052/741021957.py:31: MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure is deprecated since 3.4. Pass the keyword argument auto_add_to_figure=False and use fig.add_axes(ax) to suppress this warning. The default value of auto_add_to_figure will change to False in mpl3.5 and True values will no longer work in 3.6.  This is consistent with other Axes classes.\n",
      "  ax = Axes3D(fig)\n",
      "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp/ipykernel_10052/741021957.py:8: MatplotlibDeprecationWarning: \n",
      "The M attribute was deprecated in Matplotlib 3.4 and will be removed two minor releases later. Use self.axes.M instead.\n",
      "  xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAS4AAAE9CAYAAAC1Ao92AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAC1bUlEQVR4nOydd3gc1fW/3zszW9R7t4p7xQVXium95QuYDqGT0CH0AMGQEAgJNSFA6KF3MCX8wBiDTbONjXu3eu/SauvM3N8fI8kqK2lVDAj2fR49kmbuzNzZnf3sueeee46QUhImTJgwwwnlp+5AmDBhwvSXsHCFCRNm2BEWrjBhwgw7wsIVJkyYYUdYuMKECTPsCAtXmDBhhh1h4QoTFCHEWUKIozv8bxdCqF3a2Dv8nSqEGNP6M6p121QhxIt9XOdKIUT0UPc/zC8b7afuQJgfFyHEI8DBQG2XXenAIinlja3//xZ4tMP+O4GDhBC+DtscQohDpJQe4M9AClAFHAeMAM4C9hdCLG9t//+klH/u0JcrgMOAN4QQ3wBNgAQEEAlcIKVc09p2Ndbz6u/l9rKllGkhvAxhhjlh4fr14Qc2Aju6bJ/aug8hhAOYC0QJIW4EpJRyfh/n1YH7pJTfCiFWCSESgfOAsVLKJiHEK8AXrecXWEI4HbgCUKSUe7WdSAjxL8DdJlqtBICTpJQFQoh9gduBY2RrBLUQQgMK+vVKhBm2hIeKvz40YCKwf5efMez+IjsJeBO4CSiVUs4XQmQLIZpbRWmVEGKDEOKDDucVXf6+B1gM/E0IkQekSym/bN0f29pmAfAQ8H8AQogkIcSbrdd/qEu/A61t4oAnsay7lUIIlxDi6tY2+oBekTDDjrDF9StBCKEANinlNb20Ea3W1qvAImA2u8XAB6yVUu7f2nYC8NcOhxcCDwghJgPfAX8HdgL3Ax9jDT0BkFI2ArcLIf4MlACLhBALsQTsDuAR4D0hxHtYVlzb8FAF3gfqgGXAt8BFwD8Jfwn/qggL16+HMcB/W4VlLdZ7Px5r2NiGABzAdcAlQAIwVgjxHPCPIOfsuNB1C/AylqV2OTCh9RyRrcdeJIQ4EXi99Zr/AM4HjgdOxfKNzZVS+gCEEAdgDSMd7PZrGcCVQA2wHLgGOFZKabYKc5hfCWHh+pUgpdwGzBNCbMWyqKKwnPRfAjFAKbAvcDbWUO5eLOd6IfA40Aw4hRCrOpx2WYe/fwvsApKxnPMrgFOwJgFmtbZ5CssPNQ6oAF5q3f4/4G3gd0KINjEUwEdSyuYO18gGFrb+/TLwVesx/8ESuTC/EsLC9esjCsu3ZMMSo3eAy7AEbF8ppQk0AA1CiNFYw7PtgBdYDVwqpTRaHeifdDivbP0pllI+CCCEqJdSzmr9eyHQKKWsB+qBDUKIx1uP3QrMwBqOfo41/NtF9+ezGEsgy4BzsIaq/8Gy7HyE+dUQNq9/fVRgOb/vBMYCaUAqllV1T1sjIUQmsA+WH2kFkAvkAEe3+sFOBNbQnQQhxJ1CiPMBs8u+oDmUpJSmlNLbNkPYYVvH0AfRur0UuBHLwnoL+EJK2YQ1jOw4QRDmF0xYuH4lCCFUIcTHWPFVTwMHYPmVVgGVrc0uEkLktoYr/At4SEp5H/AglnV2H5az/hzgLSllReu5JwOTgY+whoJbsXxdeUKI5a1xXBfQXVg0QGsVwmB9jhBCRLT+a2vbLqX8G9Zw1IXlp+t4vjC/AkQ4keCvByFEDtZQTgohRgAvAl8D5VLKfwohzgSOxvJF3QkcKqU0Wo/dADRiWU25WMM9b+s53gcOB16XUjZ0uN4GKeWU1r8XAvlSyuc77H8ea2h4feu5uqIBC6WU77YGoDrpPQA1IxyA+usgLFxhgiKE0KSUg4qLEkJESindQ9SfJKChTUjD/LoJC1eYMGGGHWEfV5gwYYYdYeEKEybMsKOvWZjwODJMmDA/FT2Gt4QtrjBhwgw7wsIVJkyYYUdYuMKECTPsCAtXmDBhhh3hJRJhwvSDQCBASUkJXm+wQP8wA8HpdDJixAhsNlvfjVvpKwA1PKsYJkwH8vPziYmJISkpCWtJZ5jBIKWktraW5uZmRo4c2XV3eFYxTJihwOv1hkVrCBFCkJSU1G8LNixcYcL0k7BoDS0DeT3DwhUmzDDlpZde4qmnngJg5cqVLF++nOXLl7NixYpubc8+++yg24crYed8mDDDkFNOOYUdO3Zgmibl5eUceOCBuFwuhBD86U9/YuXKlZ3aa5rGlVdeSUxMDAB+v58vv/wy2KmHBWHhChNmGPLGG2/w5ptv4nK5OO+88zrt+9vf/hb0mEcffZRZs2YF3TfcCAtXmDB7mkWL4JNP4Igj4IQTBn26H374gT/84Q/U1NRgGAbPPvssJ598Mq+88gqqqtLY2AhASUkJe+21F9OmTQPg+uuvB2DLli18/PHHTJ8+fdB9+akIC1eYMHuSRYvgjDPA7YZnn4VXXhm0eE2bNo2XXnqJsrIy3nnnHe68804eeOAB7rjjDo466qj2dna7nZkzZ7J48eJOx5933nk4HEGzZQ8bwsIVJsye5JNPLNEC6/cnnwxauIQQXH755Zx77rl89tlnBAIBUlJSME2rNsnjjz/OpEmTGDVqFN9//z0HHXRQp+O3bNnCtddeO6g+/NSEhStMmD3JEUdYlpbbDZGR1v9DQGFhIW+88QaHHnoof/nLX3j//fe5+uqrue+++9i1axdfffUVK1asYM2aNbjdbiZNmsTmzZvJyMhA0zQ2b948JP34qQiHQ4QJsyc54QRreHj55UMyTARYv349Rx11FElJSaxbt47GxkaOP/54tm/fztKlSykqKiIpKYnbb7+dxMREFi5cyKpVq/jhhx+4++67MQyDiy66iPr6+iG4wZ+GsMUVJsye5oQThkSw2vjuu+9YsGAB06dP5z//+Q/HH388Xq8X0zQJBALU19czbdo0Lr/8cmJjY7n88stpaGjgtNNOY9u2bcTFxXHDDTewYcMG5s+fP2T9+jEJr1UME6YfbN68mYkTJ/7U3fjF0cPrGl6rGCZMmF8OYeEKEybMsCMsXGHChBl2hIUrTJgww46wcIUJ8wugpaXlp+7Cj0pYuMKEGYasXbu2fe0hWGlrdu7c2WP7cFqbMGHC/OQ8//zznH766fh8PkpLS1m+fDm/+93vqKur46ijjuKvf/1rp/bhtDZhwoTpF4u2LuKTnZ9wxOgjOGH84ANRKysrqaioICUlpT2Cfq+99uKFF17gpptu4pJLLgl6XDitTZgwYUJi0dZFnPHWGbgDbp794VleOfmVQYvXk08+SWVlJb/5zW/4+9//zo4dOzj22GM58sgjOf3008nLywPCaW3ChAkzQD7Z+QnugJUdwh1w88nOTwYtXDfccAMzZ85kxYoVHHnkkcyaNYu//vWvzJo1i8WLF3PccccxderUX3Ram7BzPkyYPcgRo48g0hYJQKQtkiNGDz47xM6dO/nDH/5AQkICr7/+OieeeCKZmZlMnz6de++9l1tvvZVVq1bh9/vb09p0/Pn444/x+/2D7sdPSdjiChNmD3LC+BN45eRXhtTH5XA4uPDCCxk7diwzZszg1FNPpa6ujg8//JA//vGPvP766yQmJvL222+H09qECRNmYJww/gT+dcy/hkS0AEzTJD4+nvfff5/HHnuMqqoqDj30UFasWMH9999PYmIiXq83nNYmTJgwPx/acs3fdNNN5ObmArB69Wq+/vpr/vSnP/H73/+e9PT0cFqbMGHCWITT2uwZwmltwoQJ84snLFxhwoQZdoSFK0yYMMOOsHCFCfMLxTAMgvmwpZQYhtHrsS6Xa091a0gIC1eYMMOcBx98kMcff7zb9n/+858cdthhHHbYYUydOpUxY8Zw2GGHceihh/LPf/6zvV1ZWRknnXRS+/+maXLEEUd0S5Wj63qPfehp357KShEOhwgTZpjjdDrbhUPXdQoKChgzZgznn38+I0eO5De/+Q1vvvkmW7Zs4bbbbuO1115j3LhxgCVSqqpis9koLy/nD3/4A1FRUaSnp3P11Vfj9/s57rjjOPXUU7n88svZsmULQggaGhqoq6tj1KhRAOTm5vL8889369ueykoRFq4wYYYZX3zxBbfccguKopCQkMCxxx7LDz/8AMA111xDSkoKd9xxB6qqcsstt3QKM/D5fCxcuJBPP/0UgNdee417772XiooK7r//fl555RXef/99jjrqKLZt20Z2djaxsbEAPPHEE+3nWbp0KR9//DH33ntvn/3dE1kpwkPFMGH2MIsWwRVXWL+Hgn333ZclS5bw9ttvY7fbAXjvvfc49dRTmTp1KnfccQcA0dHR/PnPf+amm25qP/Yvf/kLZ599NiNGjADgjDPO4LTTTuPggw/m3nvv5eWXX+axxx7DMAzy8/M5+OCDyc/Pbz/+qquuCtqnjj6zkpISEhISOOiggygoKOD666/noIMOIj09vV1gB0vY4goTZg+yaBGccQa43fDss0NTzNpms2Gz2Xj88cc5+eSTaWpq4sILL2TVqlXtubhM0wTgpJNOYsaMGaxevRqA448/nunTp2OaJlJKVFXl448/pra2lgsuuICxY8dy11134XQ6iY+P57rrriMyMrL92kuXLm3/++WXX+bbb79FSslhhx3G7bffDvCjZKUIC1eYMHuQTz6xRAus3598MjRFrauqqnjttddYtmwZTz31FBMmTMBut/O3v/2Nm266icWLF3PvvfeiKEp7e7fb3S48besV7XY7ubm5ZGZmcvjhh3PGGWdw4IEH8tlnn3H1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class Arrow3D(FancyArrowPatch):\n",
    "    def __init__(self, xs, ys, zs, *args, **kwargs):\n",
    "        FancyArrowPatch.__init__(self, (0,0), (0,0), *args, **kwargs)\n",
    "        self._verts3d = xs, ys, zs\n",
    "\n",
    "    def draw(self, renderer):\n",
    "        xs3d, ys3d, zs3d = self._verts3d\n",
    "        xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)\n",
    "        self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))\n",
    "        FancyArrowPatch.draw(self, renderer)\n",
    "def plot_path(data,path):\n",
    "    #### 起点 ####\n",
    "    Xa = data[0][0]\n",
    "    Ya = data[0][1]\n",
    "    Za = data[0][2]\n",
    "    #### 终点 ####\n",
    "    Xb = data[n][0]\n",
    "    Yb = data[n][1]\n",
    "    Zb = data[n][2]\n",
    "    #### 水平校正点 ####\n",
    "    Xh = data[data[:,3]==0][:,0]\n",
    "    Yh = data[data[:,3]==0][:,1]\n",
    "    Zh = data[data[:,3]==0][:,2]\n",
    "    #### 垂直校正点 ####\n",
    "    Xv = data[data[:,3]==1][:,0]\n",
    "    Yv = data[data[:,3]==1][:,1]\n",
    "    Zv = data[data[:,3]==1][:,2]\n",
    "\n",
    "    #### 绘制三维散点图 ####\n",
    "    fig = plt.figure()\n",
    "    ax = Axes3D(fig)\n",
    "    ax.scatter(Xa,Ya,Za, c='r', s=10, label='起点')\n",
    "    ax.scatter(Xb,Yb,Zb, c='g', s=10, label='终点')\n",
    "    ax.scatter(Xh,Yh,Zh, c='b', s=10, label='水平校正点')\n",
    "    ax.scatter(Xv,Yv,Zv, c='y', s=10, label='垂直校正点')\n",
    "\n",
    "    # 绘制图例\n",
    "    ax.legend(loc='best')\n",
    "\n",
    "    # 添加坐标轴(顺序是Z, Y, X)\n",
    "    ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})\n",
    "    ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})\n",
    "    ax.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})\n",
    "\n",
    "    ax.view_init(elev=10., azim=-80)\n",
    "    # 展示\n",
    "    start = 0\n",
    "    while start<len(path)-1:\n",
    "        pre = path[start]\n",
    "        next = path[start + 1]\n",
    "        # ax.plot([data[pre][0], data[next][0]], [data[pre][1], data[next][1]],\n",
    "        #             [data[pre][2], data[next][2]], color='red', alpha=0.8, lw=3)\n",
    "        a = Arrow3D([data[pre][0], data[next][0]], [data[pre][1], data[next][1]],\n",
    "                    [data[pre][2], data[next][2]], mutation_scale=10,\n",
    "                    lw=1, arrowstyle=\"-|>\", color=\"r\")\n",
    "        ax.add_artist(a)\n",
    "        start = start+1\n",
    "    plt.title(\"最短路径图\")\n",
    "    plt.draw()\n",
    "    plt.show()\n",
    "plot_path(data,path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7ef422c8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "90004764",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "metadata": {
     "collapsed": false
    },
    "source": [
     "## 导入包\n"
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}